const express = require('express');
const session = require('express-session');
const ejs = require('ejs');

const usersData =  require('./db/users.json');

// 导入验证中间件
const loginVirefy = require('./middleware/loginVirefy');
const app = express();

//ejs模板配置
app.set('views',__dirname+'/html');
app.engine('html',ejs.renderFile);

// 获取req.body数据的中间件
app.use(express.urlencoded({extended:false}));

app.use(session({
    name: 'sid',  // 设置cookie的name，默认值是：connect.sid
    secret: '0825', // 参与加密的字符串（又称签名）
    saveUninitialized: false, //是否为每次请求都设置一个cookie用来存储session的id
    resave: false,// 强制保存 session 即使它并没有变化,。默认为 true。建议设置成 false。
    cookie: {
        httpOnly: true, // 开启后,前端无法通过 JS 操作
        maxAge: 1000 * 30 * 30 // 这一条 是控制 sessionID 的过期时间的！！！
    }
}));

app.get('/login',(req,res)=>{
    res.render('login.html');
})

// 接收post方式的http请求
app.post('/login',(req,res)=>{
    // 获取请求体数据
    // console.log(req.body);// {username:xiaowang,pwd:123456}
    let {username,pwd} = req.body;

    // 验证 账号 和 密码是否一致
    let result = usersData.find(item=>item.username===username&&item.pwd===pwd);

    if(result){
        // res.send('登录成功');
        req.session.username = username;
        res.render('loginSuccess.html');
    }else{
        res.send('用户名或密码错误');
    }
})

app.get('/', (req, res) => {
    res.render('index.html');
})

app.get('/center',loginVirefy,(req,res)=>{
    // res.send(`${req.session.username}的个人中心页`);
    res.render('center.html',{ name:req.session.username});
})

// 设置session
app.get('/set-session',(req,res)=>{
    // 存储内存
    req.session.username = "laowang";
    req.session.age = 18;
    req.session.email = "123@163.com"
    res.send('设置成功');
})

//删除session - 需要验证
app.get('/del-session',loginVirefy,(req,res)=>{
    req.session.destroy(()=>{
        res.send('删除成功');
    })
});


app.listen(80, () => {
    console.log("启动成功");
})